Aprenda Perl em 10 minutos
Perl é uma linguagem de programação poderosa e de alto nível conhecida por suas capacidades de processamento de texto e flexibilidade. Originalmente desenvolvida para tarefas de administração de sistemas, Perl evoluiu para uma linguagem versátil usada para desenvolvimento web, programação de rede e muito mais. Este tutorial aborda os conceitos principais do Perl para ajudá-lo a aprender a linguagem rapidamente.
1. Escrevendo seu primeiro programa em Perl
Vamos começar com um programa simples. Crie um arquivo chamado hello.pl e digite o seguinte código:
#!/usr/bin/perl
print "Hello, World!\n";
Salve o arquivo e execute o seguinte comando no terminal:
perl hello.pl
A saída será:
Hello, World!
Este programa simples demonstra a funcionalidade básica de saída do Perl. A função print é usada para exibir informações de texto no console.
2. Sintaxe básica
A sintaxe do Perl é flexível e expressiva, com várias características distintas.
# Este é um comentário
print "Hello, World!\n";
Regras básicas de sintaxe em Perl:
- Comentários: Comentários de linha única começam com
# - Declarações: Terminam com ponto e vírgula
; - Linha Shebang:
#!/usr/bin/perlno topo dos arquivos de script - Variáveis: Usam caracteres especiais para denotar tipos de variáveis (
$,@,%) - Aspas de string: Podem usar aspas simples
'ou aspas duplas"
3. Variáveis e tipos de dados
No Perl, as variáveis são tipadas dinamicamente e usam caracteres especiais para denotar seu tipo.
Variáveis escalares (valores únicos):
$nome = "Alice";
$idade = 25;
$temperatura = 36.5;
$esta_ativo = 1; # 1 para verdadeiro, string vazia para falso
Variáveis de array (listas ordenadas):
@frutas = ("maçã", "banana", "cereja");
@numeros = (1, 2, 3, 4, 5);
Variáveis de hash (pares chave-valor):
%pessoa = (
"nome" => "John",
"idade" => 30,
"cidade" => "Nova York"
);
3.1 Variáveis escalares
Escalares armazenam valores únicos como strings, números ou referências.
# Operações com strings
$texto = "Programação Perl";
print length($texto); # Comprimento da string
print uc($texto); # Converter para maiúsculas
print lc($texto); # Converter para minúsculas
print substr($texto, 0, 4); # Extrair substring
# Operações numéricas
$x = 10;
$y = 3;
print $x + $y; # 13
print $x - $y; # 7
print $x * $y; # 30
print $x / $y; # 3.333...
print $x % $y; # 1 (módulo)
3.2 Variáveis de array
Arrays são coleções ordenadas que podem armazenar múltiplos valores.
@cores = ("vermelho", "verde", "azul");
# Acessando elementos do array
print $cores[0]; # "vermelho" (use $ para elemento único)
print $cores[1]; # "verde"
print $cores[-1]; # "azul" (último elemento)
# Operações com arrays
push(@cores, "amarelo"); # Adicionar ao final
pop(@cores); # Remover do final
shift(@cores); # Remover do início
unshift(@cores, "roxo"); # Adicionar ao início
# Funções de array
print scalar(@cores); # Número de elementos
print $#cores; # Último índice
3.3 Variáveis de hash
Hashes são coleções de pares chave-valor.
%estudante = (
nome => "Alice",
idade => 20,
curso => "Ciência da Computação"
);
# Acessando elementos do hash
print $estudante{"nome"}; # "Alice"
print $estudante{idade}; # 20
# Operações com hash
$estudante{"nota"} = 3.8; # Adicionar novo par chave-valor
delete $estudante{"idade"}; # Remover par chave-valor
# Funções de hash
@chaves = keys %estudante; # Obter todas as chaves
@valores = values %estudante; # Obter todos os valores
4. Controle de fluxo
Perl fornece várias declarações de controle de fluxo para gerenciar a execução do programa.
4.1 Declarações if
A declaração if avalia uma condição e executa seu bloco se a condição for verdadeira.
$idade = 20;
if ($idade >= 18) {
print "Adulto\n";
} elsif ($idade >= 13) {
print "Adolescente\n";
} else {
print "Criança\n";
}
# if em uma linha
print "Adulto\n" if $idade >= 18;
4.2 Declarações unless
unless é o oposto de if - executa quando a condição é falsa.
$idade = 15;
unless ($idade >= 18) {
print "Não é adulto\n";
}
# unless em uma linha
print "Não é adulto\n" unless $idade >= 18;
4.3 Loops
Perl suporta vários construtores de loop.
Loop while:
$contador = 0;
while ($contador < 5) {
print "Contador: $contador\n";
$contador++;
}
Loop for:
for ($i = 0; $i < 5; $i++) {
print "i = $i\n";
}
Loop foreach:
@frutas = ("maçã", "banana", "cereja");
foreach $fruta (@frutas) {
print "Fruta: $fruta\n";
}
# Usando a variável padrão $_
foreach (@frutas) {
print "Fruta: $_\n";
}
last e next:
foreach (1..10) {
last if $_ == 5; # Sair do loop
next if $_ % 2 == 0; # Pular números pares
print "$_\n"; # Saída: 1, 3
}
5. Sub-rotinas
Sub-rotinas em Perl são definidas usando a palavra-chave sub.
Definição básica de sub-rotina:
sub cumprimentar {
my $nome = shift;
return "Olá, $nome!";
}
# Chamando a sub-rotina
$mensagem = cumprimentar("John");
print $mensagem;
Usando parâmetros:
sub somar_numeros {
my ($a, $b) = @_;
return $a + $b;
}
$resultado = somar_numeros(5, 3);
print "Soma: $resultado\n";
Parâmetros padrão:
sub cumprimentar {
my ($nome, $cumprimento) = @_;
$cumprimento = "Olá" unless defined $cumprimento;
return "$cumprimento, $nome!";
}
print cumprimentar("Alice"); # "Olá, Alice!"
print cumprimentar("Bob", "Oi"); # "Oi, Bob!"
6. Expressões regulares
Perl é famoso por suas poderosas capacidades de expressões regulares.
Correspondência de padrões básica:
$texto = "Hello, World!";
if ($texto =~ /Hello/) {
print "Encontrado 'Hello'\n";
}
# Correspondência sem distinção entre maiúsculas e minúsculas
if ($texto =~ /world/i) {
print "Encontrado 'world' (sem distinção de caso)\n";
}
Substituição:
$texto = "Eu gosto de gatos e gatos são fofos";
$texto =~ s/gatos/cachorros/g; # Substituir todas as ocorrências
print "$texto\n"; # "Eu gosto de cachorros e cachorros são fofos"
Extraindo correspondências:
$email = "[email protected]";
if ($email =~ /(\w+)@(\w+\.\w+)/) {
print "Nome de usuário: $1\n"; # "usuario"
print "Domínio: $2\n"; # "exemplo.com"
}
7. Operações com arquivos
Perl fornece métodos simples para leitura e escrita de arquivos.
Lendo arquivos:
# Ler arquivo inteiro
open(my $fh, '<', 'exemplo.txt') or die "Não é possível abrir o arquivo: $!";
my $conteudo = do { local $/; <$fh> };
close($fh);
print $conteudo;
# Ler linha por linha
open(my $fh, '<', 'exemplo.txt') or die "Não é possível abrir o arquivo: $!";
while (my $linha = <$fh>) {
print $linha;
}
close($fh);
Escrevendo arquivos:
# Escrever no arquivo
open(my $fh, '>', 'saida.txt') or die "Não é possível abrir o arquivo: $!";
print $fh "Olá, Perl!\n";
close($fh);
# Anexar ao arquivo
open(my $fh, '>>', 'saida.txt') or die "Não é possível abrir o arquivo: $!";
print $fh "Anexando novo conteúdo.\n";
close($fh);
8. Funções embutidas
Perl vem com muitas funções úteis embutidas.
Funções de string:
$texto = " Programação Perl ";
print length($texto); # Comprimento da string
print uc($texto); # Converter para maiúsculas
print lc($texto); # Converter para minúsculas
print substr($texto, 0, 4); # Extrair substring
print index($texto, "Prog"); # Encontrar posição da substring
Funções de array:
@numeros = (3, 1, 4, 1, 5, 9, 2);
print join(", ", sort @numeros); # "1, 1, 2, 3, 4, 5, 9"
print join(", ", reverse @numeros); # "2, 9, 5, 1, 4, 1, 3"
# Filtrar array
@filtrados = grep { $_ > 3 } @numeros;
print join(", ", @filtrados); # "4, 5, 9"
# Transformar array
@dobrados = map { $_ * 2 } @numeros;
print join(", ", @dobrados); # "6, 2, 8, 2, 10, 18, 4"
Funções de hash:
%pessoa = (nome => "Alice", idade => 25, cidade => "Nova York");
@chaves = keys %pessoa; # Obter todas as chaves
@valores = values %pessoa; # Obter todos os valores
# Verificar se a chave existe
if (exists $pessoa{idade}) {
print "Idade existe\n";
}
9. Módulos Perl
Perl tem um ecossistema rico de módulos disponíveis através do CPAN.
Usando módulos principais:
use strict;
use warnings;
use Data::Dumper;
%dados = (nome => "Bob", idade => 30);
print Dumper(\%dados); # Imprimir estrutura de dados formatada
Instalando e usando módulos CPAN:
# Instalar módulo do CPAN
cpan install JSON
use JSON;
# Analisar JSON
$string_json = '{"nome": "Alice", "idade": 25}';
$pessoa = decode_json($string_json);
print $pessoa->{nome}; # "Alice"
# Gerar JSON
$hash_pessoa = { nome => "Bob", idade => 30 };
$saida_json = encode_json($hash_pessoa);
print $saida_json; # {"nome":"Bob","idade":30}
10. Guia de estilo Perl
Perl tem convenções da comunidade que promovem código limpo e legível.
Indentação: Use 4 espaços para indentação.
Nomenclatura de variáveis:
- Use nomes descritivos
- Siga a convenção snake_case
- Use nomes de variáveis significativos
Organização do código:
- Use
use strict;euse warnings;no topo dos scripts - Declare variáveis com
mypara limitar o escopo - Use nomes de sub-rotinas significativos
Documentação:
- Use POD (Plain Old Documentation) para documentar código
- Inclua comentários para lógica complexa
A flexibilidade do Perl e suas poderosas capacidades de processamento de texto o tornam uma excelente escolha para tarefas de administração de sistemas, desenvolvimento web e processamento de dados. Seu rico ecossistema de módulos e forte suporte da comunidade continuam a torná-lo relevante em ambientes de programação modernos.
